Add WHIP/WHEP support for ultra-low-latency streaming, ingest, and playback#225
Add WHIP/WHEP support for ultra-low-latency streaming, ingest, and playback#225anishmenon wants to merge 1 commit intoeerimoq:mainfrom
Conversation
…IP publishing as a stream protocol for ultra-low-latencystreaming to WHIP-compatible endpoints. Add a built-in WHIP serverfor receiving WebRTC streams from OBS/FFmpeg as camera sources.Add a WHEP client for subscribing to remote WebRTC streams.- WHIP publishing alongside RTMP, SRT, RIST in stream settings- WHIP server with ICE negotiation, trickle ICE, session teardown- WHEP client with configurable URL and latency per stream- RTMP-style video decode pipeline for smooth ingest playback- H.264 STAP-A decoding and recvonly track fixes in RTCHaishinKit- WHIP/WHEP streams as selectable camera sources in scenes
|
This seems to overwrite a lot of existing files with older versions. Almost as if this is based on an old Moblin version and not rebased Oh and it is one big commit so very hard to follow the changes done. |
|
Hey, you're absolutely right — sorry about that. The original PR was based on an older fork and included the entire vendored HaishinKit library plus a bunch of unrelated upstream changes mixed in with the WHIP/WHEP code. Totally my mistake. It's now split into 2 clean commits on top of latest upstream main: |
Summary
Adds full WHIP and WHEP support to Moblin, enabling ultra-low-latency WebRTC streaming in all three directions:
Motivation
Addresses community feature requests for ultra-low-latency streaming using WebRTC. WHIP/WHEP (RFC 9725 / draft) are the standard HTTP-based signaling protocols for WebRTC, supported by OBS, FFmpeg 8+, Cloudflare, and many other platforms. Compared to RTMP, WHIP delivers significantly lower latency (sub-second vs. 2+ seconds).
What's included
Publishing (stream out):
https://,http://,whip://, andwhips://endpoint URLsIngest (stream in):
Playback (subscribe):
Shared:
Test plan
The key change is making the three use cases (publish, ingest, playback) explicit and distinct so reviewers and users immediately understand what each one does.